package main

import "fmt"

func main() {
	//声明浮点型变量（三种）,只要数字含小数部分，那么它的类型就是float64
	//day := 28.8989
	//var num1 = 23.7878
	//var num2 float64 = 67.3535

	//anser := 42.0//得出的类型为float64
	//fmt.Printf("%T", anser)

	//Go语言中的浮点数类型共有两种
	//Float64
	//默认为float64
	//占用8字节，类似java中的double（双精度）
	//Float32
	//占用4字节，类似java中的float（有时也叫单精度类型）

	//显示浮点类型
	//使用Println或者Print打印浮点数的时候，默认的行为是尽可能地多打印小数点后几位
	//结合%f格式化动词可以指定打印的位数 :%.4f,打印到小数点后4位，%7.4f,一共打印7位，小数点后打印4位，不够的地方可以使用空格填充
	third := 1.0 / 3
	fmt.Println(third)
	fmt.Printf("%v\n", third)
	fmt.Printf("%f\n", third)
	fmt.Printf("%.4f\n", third)
	fmt.Printf("%7.4f\n", third)

	//Go语言中的零值
	//Go中每个变量声明了但没有初始化的情况下，就会被赋予一个零值
	//var apple int
	//var pear float64
	//fmt.Println(apple, pear)

	//Go中提供了十种整数类型，不可以存小数部分，范围有限，通常根据数值范围来选取整数类型
	//5种整数类型是有符号的，能表示正数，0，负数
	//5种整数类型是没有富豪的，能表示正数，0

	//字符串的字面值：字符串的字面值可以包含转译字符，例如\n
	//但是如果确实想得到\n但是而不换行，可以使用··代替""，这就是原始字面值
	fmt.Println("ASUKA\nMISAKA")
	fmt.Println(`ASUKA\nMISKA`)

	//类型别名：
	//类型别名就是同一类型的另一个名字，，也可以自己定义类型别名：
	//type number = int32
	//var num number = 21.0
	//fmt.Println(num)

	//类型转换：
	//在Go语言中，类型不能混着用，比如两字符串可以相加，但是字符串和数字不能相加，会报错，不像java会有自动转换的过程
	//fmt.Println("MISAKA" + "10 MIKOTO")
	//fmt.Println("MISAKA" + 10 + "MIKOTO")

	//var intNum int64 = 79
	//var floNum float64 = 34.89
	//newIntNum := float64(intNum)
	//fmt.Println(floNum + newIntNum)

	//

	var floNum float64 = 567.8987
	fmt.Println(int64(floNum))
	//无符号和有符号的类型之间也需要转换
	//不同大小的整数类型也需要转换

}
